/* eslint-disable no-undef */
import { getRunEnvironment } from "./environment";

export const originType = {
  /**
   * 用户分享
   */
  userShare: 1,
  /**
   * 电梯广告
   */
  elevatorAd: 2,
  /**
   * 公众号
   */
  officialAccounts: 3,
};

export const keyEvent = {
  /**
   * 入住成功
   */
  inboundSuccess: 1,
  /**
   * 下单成功
   */
  orderPlacedSuccess: 2,
};

// 使用 navigator.clipboard.writeText
function copyTextToClipboard(text) {
  // 检查浏览器是否支持这个API
  if (!navigator.clipboard) {
    console.error("Clipboard API not available");
    return;
  }

  navigator.clipboard.writeText(text).then(() => {
    console.log("Text copied to clipboard successfully!");
  }, (err) => {
    console.error("Failed to copy text: ", err);
  });
}

/**
 * 更新分享内容
 * @param {Object} content
 */
function updateAppShareData(content = {
  title: "", desc: "", link: "", imgUrl: "", complete: null,
}, callback) {
  const success = (...args) => {
    if (typeof callback === "function") {
      callback(...args);
    }
  };

  switch (getRunEnvironment()) {
    case "TeldApp":
      window.envApi.setTitle({ title: "在家充电" });
      window.envApi.shareEnable({ share: true });
      window.envApi.getShareContent(() => ({
        title: content.title,
        desc: content.desc,
        image: content.imgUrl,
        url: content.link,
        channel: "wxf,wxp",
      }));
      break;
    case "WX":
      wx.onMenuShareTimeline({
        title: content.title, // 分享标题
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      wx.onMenuShareAppMessage({
        title: content.title, // 分享标题
        desc: content.desc, // 分享描述
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        type: "link", // 分享类型,music、video或link，不填默认为link
        dataUrl: "", // 如果type是music或video，则要提供数据链接，默认为空
        success,
      });
      wx.onMenuShareQQ({
        title: content.title, // 分享标题
        desc: content.desc, // 分享描述
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      wx.onMenuShareWeibo({
        title: content.title, // 分享标题
        desc: content.desc, // 分享描述
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      wx.onMenuShareQZone({
        title: content.title, // 分享标题
        desc: content.desc, // 分享描述
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      wx.updateAppMessageShareData({
        title: content.title, // 分享标题
        desc: content.desc, // 分享描述
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      wx.updateTimelineShareData({
        title: content.title, // 分享标题
        link: content.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: content.imgUrl, // 分享图标
        success,
      });
      break;
    default:
      copyTextToClipboard(content.link);
      break;
  }
}


export function share(content = {
  title: "", desc: "", link: "", imgUrl: "", complete: null,
}, weixinMenuList = ["menuItem:share:appMessage", "menuItem:share:timeline"]) {
  switch (getRunEnvironment()) {
    case "TeldApp":
      window.envApi.share({
        title, desc, image: imgUrl, url: link, channel: "wxp,wxf,sina,qqf,qqz,sys",
      });
      break;
    case "WX":
      updateAppShareData(content, () => {
        wx.showMenuItems({
          menuList: weixinMenuList,
        });
      });
      break;
    default:
      break;
  }
}
